home *** CD-ROM | disk | FTP | other *** search
/ Chip: Internet / Chip Internet.iso / wwwutil / corelweb / gtr_inst.mst < prev    next >
Text File  |  1995-04-26  |  24KB  |  763 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  3. '*
  4. '* Setup script for Enhanced Mosaic.  This file is based upon the sample
  5. '* file "\win32s\setup\32sinst.mst" provided with the Win32 SDK (3.1 final
  6. '* release; win32s version 1.1).
  7. '*
  8. '**************************************************************************
  9.  
  10. '**************************************************************************
  11. ' Modified by David Shirley and Rajesh Aery - April 19, 1995
  12. '         - setup modified to coincide with COREL CD Office Companion 16
  13. '**************************************************************************
  14.  
  15. '$DEFINE DEBUG  ''Define for script development/debugging
  16.  
  17. '$INCLUDE 'setupapi.inc'
  18. '$INCLUDE 'msdetect.inc'
  19.  
  20. ''****************************************************************************
  21. ''****************************************************************************
  22. ''*** Spyglass Transform Installation Dialog ID Numbers
  23. ''*** (These values must match the values in DIALOGS.H)
  24. ''****************************************************************************
  25. ''****************************************************************************
  26.  
  27. CONST WEINSTALLEDWIN32S      = 4000
  28. CONST ALREADYHAVEWIN32S      = 4100
  29. CONST KERNELHAS32            = 4200
  30. CONST ASKQUIT                = 500
  31. CONST BADPATH                = 1400
  32.  
  33. CONST TRANSFORMWELCOME       = 100
  34. CONST TRANSFORMINSTALLED     = 200
  35. CONST TRANSFORMPATH          = 300
  36. CONST RESTARTINGWINDOWS      = 400
  37. CONST WANTSAMPLEDATA         = 600
  38. CONST INSTALLOLDER           = 700
  39.  
  40. CONST WIN32SWELCOME          = 1100
  41. CONST VERPATH                = 1200
  42.  
  43. CONST EXITFAILURE            = 2100
  44. CONST EXITQUIT               = 2200
  45. CONST EXITFAILNOTWIN31       = 2300
  46. CONST EXITFAILNOTENH         = 2400
  47. CONST EXITFAILNOTINTEL       = 2500
  48. CONST EXITEXIT               = 2600
  49.  
  50. const exitnoroom = 6300
  51. global freespace&
  52.  
  53. ''Bitmap ID
  54. CONST LOGO = 1
  55.  
  56. GLOBAL DESTSYS$      ''Windows\System directory.
  57. GLOBAL DEST32S$      ''Windows\System\Win32s directory
  58.  
  59. ''****************************************************************************
  60. ''****************************************************************************
  61. ''*** Spyglass Transform Pathname for Installation
  62. ''****************************************************************************
  63. ''****************************************************************************
  64.  
  65. GLOBAL DESTXF$     ''Spyglass Transform Directory
  66. GLOBAL GROUPFLAG$  ''Flag to check if COREL CD Office already has been installed
  67.  
  68.  
  69. DECLARE SUB DoWin32sInstallation
  70. DECLARE SUB UpdateSystemIni
  71. DECLARE SUB RebootSystem
  72. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  73. DECLARE FUNCTION MakeSystemIni LIB "INIUPD.DLL" (arg1$, arg2$) AS INTEGER
  74. DECLARE FUNCTION RestartWindows LIB "INIUPD.DLL" AS INTEGER
  75. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  76. DECLARE FUNCTION PagingEnabled LIB "INIUPD.DLL" AS INTEGER
  77. DECLARE FUNCTION ShareEnabled LIB "INIUPD.DLL" AS INTEGER
  78. DECLARE FUNCTION IsWin32sLoaded LIB "INIUPD.DLL" (arg1$) AS INTEGER
  79. DECLARE FUNCTION ExitWindowsExec LIB "USER.EXE" (arg1$, arg2$) AS INTEGER
  80.  
  81. INIT:
  82.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  83.     HELPPROC$ = "FHelpDlgProc"        ''Help dialog procedure
  84.     szOldVer$ ="1.00.000     "        ''Reserve space in string for version
  85. ''    GLOBAL AlwaysCopy%
  86. ''    AlwaysCopy% = 0
  87.     BoolWeInstalledWin32s% = 0
  88.     BoolKernelSupports32% = 0
  89.  
  90.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  91.     
  92.     SetBitmap CUIDLL$, LOGO
  93.     SetTitle "Corel Web Mosaic Setup"
  94.  
  95.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  96.     IF szInf$ = "" THEN
  97.     szInf$ = GetSymbolValue("STF_CWDDIR") + "guitar.inf"
  98.     END IF
  99.     ReadInfFile szInf$
  100.  
  101. ''****************************************************************************
  102. ''****************************************************************************
  103. ''***
  104. ''*** Spyglass Transform Greeting.
  105. ''***
  106. ''****************************************************************************
  107. ''****************************************************************************
  108.  
  109. TRANSFORMWELCOME:
  110.  
  111.     sz$ = UIStartDlg(CUIDLL$, TRANSFORMWELCOME, "FInfoDlgProc", 0, "")
  112.     IF sz$ = "CONTINUE" THEN
  113.     UIPop 1
  114.     ELSE
  115.     GOSUB ASKQUIT
  116.     GOTO TRANSFORMWELCOME
  117.     END IF
  118.  
  119.     szXFNewVer$ = GetIniKeyString(SrcDir$ + "corelweb.INI", "Version", "Build")
  120.     szXFRelease$ = GetIniKeyString(SrcDir$ + "corelweb.INI", "Version", "Release")
  121.  
  122.  
  123.  
  124. ''****************************************************************************
  125. ''****************************************************************************
  126. ''***
  127. ''*** Determine if Win32s is necessary.
  128. ''***
  129. ''****************************************************************************
  130. ''****************************************************************************
  131.  
  132.     ON ERROR GOTO ERRNORMALWIN32S
  133.     DESTSYS$ = GetWindowsSysDir()
  134.  
  135.     freespace = GetFreeSpaceForDrive(MID$(DESTSYS$,1,1))
  136.     freespace = freespace/1024
  137.     freespace = freespace/1024
  138.     IF freespace<3 THEN
  139.         goto NOSPACE
  140.     ENDIF
  141.  
  142.     DEST32S$ = DESTSYS + "WIN32S\"
  143.  
  144.  
  145. ''****************************************************************************
  146. ''*** Determine if computer system is capable is using Win32s.
  147. ''****************************************************************************
  148.  
  149. CHECK:
  150.  
  151.     IF GetWindowsMajorVersion < 3 THEN
  152.     ExitCode% = EXITFAILNOTWIN31
  153.     GOTO QUITWIN32S
  154.     END IF
  155.     IF GetWindowsMajorVersion = 3 AND GetWindowsMinorVersion < 10 THEN
  156.     ExitCode% = EXITFAILNOTWIN31
  157.     GOTO QUITWIN32S
  158.     END IF
  159.     '' Check that we are not runnig on Chicago, including pre-released
  160.     '' Chicago versions.
  161.     IF GetWindowsMajorVersion * 100 + GetWindowsMinorVersion > 350 THEN
  162.     GOTO KERNEL32
  163.     END IF
  164.     IF GetWindowsMode < 2  THEN
  165.     IF OnWindowsNT() THEN
  166.        ExitCode% = EXITFAILNOTINTEL    '' Running on Windows NT (on RISC)
  167.     ELSE
  168.        ExitCode% = EXITFAILNOTENH    '' Standard Mode Windows
  169.     END IF
  170.     GOTO QUITWIN32S
  171.     END IF
  172.     IF OnWindowsNT() THEN
  173.     GOTO KERNEL32
  174.     END IF
  175.  
  176. ''****************************************************************************
  177. ''*** See if our version is newer than the one on the system or the one on the
  178. ''*** system was not completely installed.
  179. ''****************************************************************************
  180.  
  181.     '' Get version of Win32s to be installed from version info in file
  182.     SrcDir$ = GetSymbolValue("STF_SRCDIR") + "redist\"
  183.     szNewVer$ = GetVersionOfFile(SrcDir$ + "WIN32S16.DLL" )
  184.  
  185.     '' Check if Win32s is partially installed
  186.     sz$ = GetIniKeyString (DESTSYS$ + "WIN32S.INI", "Win32s", "Setup")
  187.     '' If WIN32S.INI specifies Setup=0, then force complete Win32s file overwrite
  188.     IF sz$ = "0" THEN
  189. ''    AlwaysCopy% = 1
  190.     GOTO INSTALLWIN32S
  191.     END IF
  192.     '' If WIN32S.INI is missing, try and reinstall Win32s files/recreate WIN32S.INI
  193.     IF sz$ <> "1" THEN
  194.     GOTO INSTALLWIN32S
  195.     END IF
  196.  
  197.     '' If Win32s is already installed, get running version number
  198.     i% = DoesFileExist( DESTSYS$ + "W32SYS.DLL", femExists )
  199.     IF i% = 1 THEN
  200.     i% = IsWin32sLoaded( szOldVer$ )
  201.     ENDIF
  202.  
  203.     IF i% = 0 THEN
  204.     GOTO INSTALLWIN32S
  205.     END IF
  206.     IF szNewVer$ > szOldVer$ THEN
  207.     GOTO INSTALLWIN32S
  208.     END IF
  209.     GOTO ALREADYHAVEWIN32S
  210.  
  211.  
  212. ''****************************************************************************
  213. ''****************************************************************************
  214. ''***
  215. ''*** We must attempt to install Win32s.
  216. ''***
  217. ''****************************************************************************
  218. ''****************************************************************************
  219.  
  220. INSTALLWIN32S:
  221.     SrcDir$ = GetSymbolValue("STF_SRCDIR") + "redist\"
  222.     ClearCopyList
  223.     AddSectionFilesToCopyList "Windows16System", SrcDir$, DESTSYS$
  224.     CopyFilesInCopyList
  225.  
  226.     sz$ = UIStartDlg(CUIDLL$, WIN32SWELCOME, "FInfoDlgProc", 0, "")
  227.     IF sz$ = "CONTINUE" THEN
  228.     UIPop 1
  229.     ELSE
  230.     GOSUB ASKQUIT
  231.     GOTO INSTALLWIN32S
  232.     END IF
  233.  
  234.  
  235. GETWIN32SPATH:
  236.     IF PagingEnabled() = 0 THEN
  237.     i% = DoMsgBox("Use the Control Panel 386 Enhanced icon and configure Windows using the Virtual Memory option.", "Win32s requires Virtual Memory", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  238.     ExitCode% = EXITEXIT               '' Enhanced mode but not paging
  239.     GOTO QUITWIN32S
  240.     END IF
  241.  
  242.     IF ShareEnabled() = 0 THEN
  243.     i% = DoMsgBox( "Please run SHARE.EXE before starting Windows or add SHARE.EXE to your AUTOEXEC.BAT file.", "Win32s SETUP requires File Sharing", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  244.     ExitCode% = EXITEXIT              '' SHARE not loaded
  245.     GOTO QUITWIN32S
  246.     END IF
  247.  
  248.     SetSymbolValue "EditTextIn", DESTSYS$
  249.     SetSymbolValue "EditFocus", "END"
  250.  
  251. GETPATHL1:
  252.     sz$ = UIStartDlg(CUIDLL$, VERPATH, "FDispDlgProc", 0, "")
  253.  
  254.     IF sz$ = "CONTINUE" THEN
  255.     IF IsDirWritable(DESTSYS$) = 0 THEN
  256.         GOSUB BADPATH
  257.         GOTO GETPATHL1
  258.     END IF
  259.     UIPop 1
  260.     ELSEIF sz$ = "REACTIVATE" THEN
  261.     GOTO GETPATHL1
  262.     ELSEIF sz$ = "BACK" THEN
  263.     UIPop 1
  264.     GOTO INSTALLWIN32S
  265.     ELSE
  266.     GOSUB ASKQUIT
  267.     GOTO GETPATHL1
  268.     END IF
  269.  
  270. COPYFILES:
  271.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "0", cmoOverwrite
  272.  
  273.     '' Indicate Win32s install failure until all files known to be copied.
  274.     ExitCode% = EXITFAILURE
  275.     ERR = 0
  276.  
  277.     CreateDir DEST32S$, cmoNone
  278.     DoWin32sInstallation
  279.     UpdateSystemIni
  280.  
  281.     '' Terminate if unhandled fatal error
  282.     IF ERR <> 0 THEN
  283.     GOTO QUITWIN32S
  284.     END IF
  285.  
  286.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "1", cmoOverwrite
  287.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Version", szNewVer$, cmoOverwrite
  288.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Nls", "AnsiCP", "1252", cmoOverwrite
  289.  
  290.     BoolWeInstalledWin32s% = 1
  291.     GOTO INSTALLTRANSFORM
  292.  
  293.  
  294. KERNEL32:
  295.     SrcDir$ = GetSymbolValue("STF_SRCDIR") + "redist\"
  296.     ClearCopyList
  297.     AddSectionFilesToCopyList "Windows32System", SrcDir$, DESTSYS$
  298.     CopyFilesInCopyList
  299.     BoolKernelSupports32% = 1
  300.     GOTO INSTALLTRANSFORM
  301.  
  302. ALREADYHAVEWIN32S:
  303.     SrcDir$ = GetSymbolValue("STF_SRCDIR") + "redist\"
  304.     ClearCopyList
  305.     AddSectionFilesToCopyList "Windows16System", SrcDir$, DESTSYS$
  306.     CopyFilesInCopyList
  307.     BoolWeInstalledWin32s% = 0
  308.     GOTO INSTALLTRANSFORM
  309.  
  310.  
  311. ''****************************************************************************
  312. ''****************************************************************************
  313. ''***
  314. ''*** Win32s Error Handling.
  315. ''***
  316. ''****************************************************************************
  317. ''****************************************************************************
  318.  
  319. QUITWIN32S:
  320.     ON ERROR GOTO ERRQUIT
  321.     IF ERR = 0 THEN
  322.     dlg% = ExitCode%
  323.     ELSEIF ERR = STFQUIT THEN
  324.     dlg% = EXITQUIT
  325.     ExitCode% = EXITQUIT
  326.     ELSE
  327.     dlg% = EXITFAILURE
  328.     ExitCode% = EXITQUIT
  329.     END IF
  330.  
  331. QUITL1:
  332.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  333.     IF sz$ = "REACTIVATE" THEN
  334.     GOTO QUITL1
  335.     END IF
  336.     UIPop 1
  337.     END
  338.  
  339. '' Fatal error handler for error message routine
  340. ERRQUIT:
  341.     i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  342.     END
  343.  
  344. '' Bypass run-time errors. Let final dialog box display fatal error message.
  345. ERRNORMALWIN32S:
  346.     '' Check if user cancelled setup
  347.     IF ERR = STFQUIT THEN
  348.     GOTO QUITWIN32S
  349.     END IF
  350.     RESUME NEXT
  351.  
  352.  
  353.  
  354. ''****************************************************************************
  355. ''****************************************************************************
  356. ''***
  357. ''*** Start of Spyglass Transform Section.
  358. ''***
  359. ''****************************************************************************
  360. ''****************************************************************************
  361.  
  362. INSTALLTRANSFORM:
  363.     ON ERROR GOTO ERRNORMALTRANSFORM
  364.  
  365.     ''***
  366.     ''*** Tell them the status of Win32s installation and ask if they
  367.     ''*** still want to install Transform.
  368.     ''***
  369.  
  370.     IF BoolWeInstalledWin32s% = 1 THEN
  371.     sz$ = UIStartDlg(CUIDLL$, WEINSTALLEDWIN32S, "FInfoDlgProc", 0, "")
  372.     ELSE
  373.     IF BoolKernelSupports32% = 1 THEN
  374.         '** removed sz$ = UIStartDlg(CUIDLL$, KERNELHAS32, "FInfoDlgProc", 0, "")
  375.         sz$ = UIStartDlg(CUIDLL$, WEINSTALLEDWIN32S, "FInfoDlgProc", 0, "")
  376.  
  377.     ELSE
  378.         '** removed sz$ = UIStartDlg(CUIDLL$, ALREADYHAVEWIN32S, "FInfoDlgProc", 0, "")
  379.         sz$ = UIStartDlg(CUIDLL$, WEINSTALLEDWIN32S, "FInfoDlgProc", 0, "")
  380.     
  381.     END IF
  382.     END IF
  383.     IF sz$ = "CONTINUE" THEN
  384.     UIPop 1
  385.     ELSE
  386.     GOTO QUITTRANSFORMINSTALL
  387.     END IF
  388.  
  389. SAMPLEDATA:
  390.  
  391.     ''***
  392.     ''*** Ask if they want sample data installed.
  393.     ''***
  394.  
  395. ''***    DoSampleData = 0
  396. ''***    sz$ = UIStartDlg(CUIDLL$, WANTSAMPLEDATA, "FInfoDlgProc", 0, "")
  397. ''***    IF sz$ = "CONTINUE" THEN
  398. ''***    UIPop 1
  399. ''***    DoSampleData = 1
  400. ''***    ELSEIF sz$ = "EXIT" THEN
  401. ''***    GOTO QUITTRANSFORMINSTALL
  402. ''***    ELSE
  403. ''***    UIPop 1            ''*** Skip Sample Data
  404. ''***    END IF
  405.  
  406.  
  407. GETTRANSFORMPATH:
  408.  
  409. ''*** Get Pathname
  410.  
  411.     '**additions by David Shirley**
  412.     WinPath$ = GetWindowsDir() 
  413.     DESTXF$= GetIniKeyString(WinPath$ + "WIN.INI", "CorelCDOfficeComp", "Dir")
  414.     IF (DESTXF$="") THEN 
  415.         DESTXF$ = MID$(DESTSYS$,1,3) + "CDOFFICE\CORELWEB"
  416.     ELSE
  417.         DESTXF$ = DESTXF$ + "CORELWEB"    
  418.     ENDIF
  419.     '******************************
  420.  
  421.     SetSymbolValue "EditTextIn", DESTXF$
  422.     SetSymbolValue "EditFocus", "END"
  423.  
  424. GETTRANSFORMPATHL1:
  425.  
  426. ''*** Get Pathname Loop (get until valid)
  427.  
  428.     sz$ = UIStartDlg(CUIDLL$, TRANSFORMPATH, "FEditDlgProc", 0, "")
  429.  
  430.     IF sz$ = "CONTINUE" THEN
  431.     DESTXF$ = GetSymbolValue("EditTextOut")
  432.  
  433.     freespace = GetFreeSpaceForDrive(MID$(DESTXF$,1,1))
  434.     freespace = freespace/1024
  435.     freespace = freespace/1024
  436.     IF freespace<1 THEN
  437.         goto NOSPACE
  438.     ENDIF
  439.  
  440.     IF MID$(DESTXF$, LEN(DESTXF$), 1) <> "\" THEN
  441.         DESTXF$ = DESTXF$ + "\"
  442.     END IF
  443.     ''Validate new path.
  444.     IF IsDirWritable(DESTXF$) = 0 THEN
  445.         GOSUB BADPATH
  446.         GOTO GETTRANSFORMPATHL1
  447.     END IF
  448.     UIPop 1
  449.  
  450.     GOTO CHECKTRANSFORMVERSION
  451.     ELSEIF sz$ = "REACTIVATE" THEN
  452.     GOTO GETTRANSFORMPATHL1
  453.     ELSEIF sz$ = "EXIT" THEN
  454.     UIPop 1
  455.     GOTO QUITTRANSFORMINSTALL
  456.     END IF
  457.  
  458. CHECKTRANSFORMVERSION:
  459.  
  460. ''***
  461. ''*** Check our version number versus version number of previously
  462. ''*** installed version (if present).
  463. ''***
  464.  
  465. ''*** We expect the .INI file to contain something like this:
  466. ''***
  467. ''***    [Version]
  468. ''***    Build=3.0.0.0
  469. ''***    Release=3.0a1
  470. ''***
  471. ''*** We use the build-version in the version check.
  472. ''*** We use the release-version in naming the PIF's.
  473. ''***
  474.  
  475.     szXFOldVer$ = GetIniKeyString(DESTXF$ + "corelweb.INI", "Version", "Build")
  476.     IF szXFOldVer$ = "" or LEN(szXFOldVer$) = 0 THEN
  477.     GOTO COPYTRANSFORM
  478.     END IF
  479.  
  480.     IF szXFNewVer$ < szXFOldVer$ THEN
  481.     sz$ = UIStartDlg(CUIDLL$, INSTALLOLDER, "FInfoDlgProc", 0, "")
  482.     IF sz$ = "CONTINUE" THEN
  483.         UIPop 1
  484.     ELSE
  485.         GOTO QUITTRANSFORMINSTALL
  486.     END IF
  487.     END IF
  488.  
  489.  
  490. COPYTRANSFORM:
  491.  
  492. ''*** Copy Spyglass Transform onto hard disk 
  493.  
  494.     ClearCopyList
  495.     CreateDir DESTXF$, cmoNone
  496.  
  497.     SrcDir$ = GetSymbolValue("STF_SRCDIR") + "programs\"
  498.  
  499.     ERR = 0
  500.     AddSectionFilesToCopyList "Win32appGuitar", SrcDir$, DESTXF$
  501.  
  502.     DESTXFHELP$ = DESTXF$ + "HELP"
  503.     CreateDir DESTXFHELP$, cmoNone
  504.     AddSectionFilesToCopyList "Win32appMosaicHelp", (SrcDir$ + "help\"), DESTXFHELP$
  505.  
  506.     CopyFilesInCopyList
  507.  
  508.     IF ERR <> 0 THEN
  509.     GOTO QUITTRANSFORMINSTALL
  510.     END IF
  511.  
  512.     ''*** We are requested to add a section to WIN32S.INI indicating that we
  513.     ''*** use Win32s and what version we think we're using.
  514.  
  515.     IF DoesFileExist( DESTSYS$ + "WIN32S.INI", femExists ) THEN
  516.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "corelweb", "Setup", "1", cmoOverwrite
  517.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "corelweb", "Version", szNewVer$, cmoOverwrite
  518.     END IF
  519.  
  520.     ERR = 0
  521.  
  522.     '**more stuff added**
  523.     WinPath$ = GetWindowsDir()
  524.     GROUPFLAG$ = GetIniKeyString(WinPath$ + "WIN.INI", "CorelCDOfficeComp", "Dir")
  525.     IF (GROUPFLAG$ = "") THEN 
  526.         GroupName$ = "Corel CD Office Companion"        
  527.     ELSE
  528.         GroupName$ = GetIniKeyString(GROUPFLAG$ + "CDOFSET.INI", "UserInfo", "ProgGroupName")
  529.         IF (GroupName$ = "") THEN
  530.             GroupName$ = "Corel CD Office Companion"
  531.         ENDIF             
  532.     ENDIF
  533.  
  534.     CreateProgmanGroup GroupName$, "", cmoNone
  535.     ShowProgmanGroup   GroupName$, 1, cmoNone
  536.     CreateProgmanItem  GroupName$, "Corel Web Mosaic", DESTXF$ + "corelweb.EXE", "", cmoOverwrite
  537.     CreateProgmanItem  GroupName$, "Eudora", DESTXF$ + "eudora\weudora.exe", "", cmoOverwrite
  538.  
  539. ''***    IF OnWindowsNT() THEN
  540. ''***    CreateProgmanItem  "Enhanced Mosaic", "Mosaic Help", "WINHLP32.EXE " + DESTXF$ + "EMOSAIC.HLP", "", cmoOverwrite
  541. ''***    ELSE
  542. ''***    CreateProgmanItem  "Enhanced Mosaic", "Mosaic Help", "WINHELP.EXE " + DESTXF$ + "EMOSAIC.HLP", "", cmoOverwrite
  543. ''***    END IF
  544.  
  545.     ''*** Only put up success dialog if icon added to group
  546.  
  547.     IF ERR <> 0 THEN
  548.     GOTO QUITTRANSFORMINSTALL
  549.     END IF
  550.  
  551. ''***
  552. ''*** if we installed Win32s, then we must force a reboot of the system.
  553. ''***
  554.  
  555.     IF BoolWeInstalledWin32s% = 0 THEN
  556.     sz$ = UIStartDlg(CUIDLL$, TRANSFORMINSTALLED, "FInfoDlgProc", 0, "")
  557.     ELSE
  558.     sz$ = UIStartDlg(CUIDLL$, RESTARTINGWINDOWS, "FInfoDlgProc", 0, "")
  559.     RebootSystem
  560.     ''***
  561.     ''*** We survived a 'reboot'; something must be wrong.  Panic.
  562.     ''***
  563.     CreateIniKeyValue DESTSYS$ + "WIN32S.INI", "Win32s", "Setup", "0", cmoOverwrite
  564.     i% = DoMsgBox("Win32s is not properly configured and Win32s Setup must be run again.", "Unable to Restart Windows", MB_ICONEXCLAMATION+MB_OK+MB_TASKMODAL)
  565.     END IF
  566.     END
  567.  
  568. ''****************************************************************************
  569. ''****************************************************************************
  570. ''***
  571. ''*** Spyglass Transform Error Handling.
  572. ''***
  573. ''****************************************************************************
  574. ''****************************************************************************
  575.  
  576. QUITTRANSFORMINSTALL:
  577.     ON ERROR GOTO ERRQUIT
  578.     IF ERR = STFQUIT THEN
  579.     i% = DoMsgBox("Terminating Corel Web Mosaic installation.","Corel Web Mosaic Setup", MB_OK+MB_TASKMODAL)
  580.     END IF
  581.     i% = DoMsgBox("Corel Web Mosaic has not been installed.","Corel Web Mosaic Setup", MB_OK+MB_TASKMODAL)
  582.     END
  583.  
  584. ERRNORMALTRANSFORM:
  585.     IF ERR = STFQUIT THEN
  586.     GOTO QUITTRANSFORMINSTALL
  587.     END IF
  588.     RESUME NEXT
  589.  
  590.  
  591.  
  592. '*************************************************************************
  593. '*************************************************************************
  594. '***
  595. '*** QUIT -- Initial error handler (until we define our own).
  596. '***
  597. '*************************************************************************
  598. '*************************************************************************
  599.  
  600. QUIT:
  601.     IF ERR <> STFQUIT THEN
  602.     i% = DoMsgBox("Unable to start Setup.","Corel Web Mosaic Setup", MB_OK+MB_TASKMODAL)
  603.     END IF
  604.     END
  605.  
  606.  
  607.  
  608. '*************************************************************************
  609. '*************************************************************************
  610. '***
  611. '*** BADPATH
  612. '***
  613. '*************************************************************************
  614. '*************************************************************************
  615.  
  616. BADPATH:
  617.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  618.     IF sz$ = "REACTIVATE" THEN
  619.     GOTO BADPATH
  620.     END IF
  621.     UIPop 1
  622.     RETURN
  623.  
  624.  
  625.  
  626. '*************************************************************************
  627. '*************************************************************************
  628. '***
  629. '*** ASKQUIT
  630. '***
  631. '*************************************************************************
  632. '*************************************************************************
  633.  
  634. ASKQUIT:
  635.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  636.  
  637.     IF sz$ = "EXIT" THEN
  638.     UIPopAll
  639.     ERROR STFQUIT
  640.     ELSEIF sz$ = "REACTIVATE" THEN
  641.     GOTO ASKQUIT
  642.     ELSE
  643.     UIPop 1
  644.     END IF
  645.     RETURN
  646.  
  647.  
  648. NOSPACE:
  649.  
  650.     sz$ = UIStartDlg(CUIDLL$, exitnoroom, "FInfoDlgProc", 0, "")
  651.     END
  652.  
  653. '*************************************************************************
  654. '*************************************************************************
  655. '**
  656. '** DoWin32sInstallation
  657. '**
  658. '** Purpose:
  659. '**     Builds the copy list and performs all installation operations.
  660. '** Arguments:
  661. '**     none.
  662. '** Returns:
  663. '**     none.
  664. '**
  665. '*************************************************************************
  666. '*************************************************************************
  667.  
  668. SUB DoWin32sInstallation STATIC
  669.  
  670.     SrcDir$ = GetSymbolValue("STF_SRCDIR") + "redist\"
  671.     
  672.     AddSectionFilesToCopyList "WindowsSystem", SrcDir$, DESTSYS$
  673.     AddSectionFilesToCopyList "WindowsSystemWin32s", SrcDir$, DESTSYS$ + "WIN32S\"
  674.  
  675.     '' Add obsolete files to be removed
  676.     AddSectionFilesToCopyList "Win32sSystemObsoleteFiles", SrcDir$, DESTSYS$ + "WIN32S\"
  677.  
  678.     SetRestartDir GetWindowsDir()
  679.  
  680.     CopyFilesInCopyList
  681.  
  682. END SUB
  683.  
  684.  
  685.  
  686. '**************************************************************************
  687. '**************************************************************************
  688. '**
  689. '** UpdateSystemIni
  690. '**
  691. '**************************************************************************
  692. '**************************************************************************
  693.  
  694. SUB UpdateSystemIni STATIC
  695.  
  696.     VxDPath$ = DEST32S$ + "W32S.386"
  697.     SystemIniPath$ = GetWindowsDir()
  698.  
  699.     t% = MakeSystemIni(SystemIniPath$, VxdPath$)
  700.  
  701. END SUB
  702.  
  703.  
  704.  
  705. '**************************************************************************
  706. '**************************************************************************
  707. '**
  708. '** RebootSystem
  709. '**
  710. '**************************************************************************
  711. '**************************************************************************
  712.  
  713. SUB RebootSystem STATIC
  714.  
  715. '   Check if any files were locked during install.  If the RestartList
  716. '   is not empty, ExitExecRestart() will restart Windows, cleanup setup
  717. '   files, and copy over locked files before Windows restarts.
  718.     i% = RestartListEmpty()
  719.     IF i% = 0 THEN
  720. '      ExitExecRestart() only returns if applications refuse to be shutdown.
  721. '      Win32s is installed but will not operate until Windows is restarted
  722. '      and the Win32s VxD is loaded.
  723.        i% = ExitExecRestart()
  724.      ELSE
  725. '      If the RestartList list is empty, it is necessary to restart windows
  726. '      directly.  The MSSETUP program creates _MSRSTRT.EXE and _MSSETUP.BAT
  727. '      in the restart directory.  This program should be exec'd to handle
  728. '      proper MSSETUP cleanup (temp files) and restart Windows.
  729.        i% = ExitWindowsExec( GetWindowsDir() + "_MSRSTRT.EXE", "_MSSETUP.BAT" )
  730.      END IF
  731.  
  732. END SUB
  733.  
  734.  
  735.  
  736. '**************************************************************************
  737. '**************************************************************************
  738. '**
  739. '** MakePath
  740. '**
  741. '** Purpose:
  742. '**     Appends a file name to the end of a directory path,
  743. '**     inserting a backslash character as needed.
  744. '** Arguments:
  745. '**     szDir$  - full directory path (with optional ending "\")
  746. '**     szFile$ - filename to append to directory
  747. '** Returns:
  748. '**     Resulting fully qualified path name.
  749. '*************************************************************************
  750. '**************************************************************************
  751.  
  752. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  753.     IF szDir$ = "" THEN
  754.     MakePath = szFile$
  755.     ELSEIF szFile$ = "" THEN
  756.     MakePath = szDir$
  757.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  758.     MakePath = szDir$ + szFile$
  759.     ELSE
  760.     MakePath = szDir$ + "\" + szFile$
  761.     END IF
  762. END FUNCTION
  763.